/**
 * class类
 * 1. 类中构造器不是必须写,要对实例进行一些初始化操作,才需要写.
 * 2. 如果A继承B,且A中有构造器,那么A构造器中必须写super
 * 3. 类中定义的方法,都在类的原型对象上,供类的实例使用.
 */

class Person{
	// 构造器中this是谁?- 类的实例对象
	constructor(name,age) {
		this.name=name;
		this.age=age;
	}
	speak(){
		// 这个方法放在哪里? 类的原型对象上 供实例使用
		// 通过Person实例调用speak时,speak中this就是Person实例
		console.log(`我叫${this.name},我今年${this.age}岁了`)
	}
}

class Student extends Person{
	constructor(name,age,grade) {
		super(name,age);
		this.grade=grade;
	}
	speak(){
		// 这个方法放在哪里? 类的原型对象上 供实例使用
		// 通过Person实例调用speak时,speak中this就是Person实例
		console.log(`我叫${this.name},我今年${this.age}岁了,现在读${this.grade}`)
	}
}
const p1=new Person('张三',20);
const p2=new Person('李四',30);
const  p3=new Student('王五',15,'高一')
console.log(p1)
console.log(p2)
console.log(p3)
p1.speak();
p2.speak();
p3.speak();
